/************
 * Engine.h *
 ************/

// The magical engine class!
// This class should contain many important flags and methods regarding
// the operation of the program.

#ifndef ENGINE_H
#define ENGINE_H

// Macro shortcut to get the engine singleton
#define ENGINE engine::Engine::getInstance()

// Begin engine namespace
namespace engine
{
	// The engine class
	class Engine
	{
	private:
		static bool instance_flag;	// Singleton flag
		static Engine* engine;		// Singleton object

	public:
		bool done;		// Are we done with the program?

	private:
		Engine();		// Constructor
		~Engine();		// Destructor
	public:
		static Engine* getInstance();	// Gets the singleton
		
		void initialize();	// Initializes everything
		void update();		// Per-frame update
	};
}
// End engine namespace

#endif